#!/bin/bash
#---------------------------------------------------------
# в этом участке кода производится парсинг строки
# пример строки "15 18 40 70", результат записывается в массив в виде
# array[0]=15
# array[1]=18 и т.д.
# Необходимо обратить внимание на то какой вид иммеет входящая строка.
# Разберем на нашем примере.
# Наша строка содержит 4 пары чисел, но нарисует она только 2 корабля соответсвенно.
# Программа разбивает пары чисел таким образом, что
# (1,5) и (1,8) - это 2 противополодные вершины.
# При вводе строки необходимо подавать на вход координаты левой верхней вершины и
# правой нижней.
# При этом необходимо учитывать, что при вводе вершин для одного корабля, 
# либо 1 и 3 числа должны быть одинаковые (15 18),
# либо 2 и 4 должны быть одинаковы (40 70)

str=$1
lenght=`expr "$str" : '.*'`  	#вычисление длины строки

declare -i index=1
declare -i count=0
declare -a array[11]
 
while ((index != 0))
do
let count++;
#echo `expr "$str" : '\( \)'`  #нахождение подстроки (в данном случае подстрока=пробелу)
index=`expr index "$str" \ `   #находит номер позиции первого совпадения подстроки ( в 				       #данном случае подстрока=пробел)

if (($index != 0))
then
c=`expr $index \- 1`			#последний символ до пробела
substr=`expr substr "$str" 1 $c`	#нахождение подстроки до пробела 

array[$i]=$substr
str=${str#$substr}
str=${str#\ } 			#убираем пробел стоящий перед следующими координатами

else
substr=`expr substr "$str" 1 $lenght`
array[$i]=$substr
fi

i=`expr $i \+ 1`
done
#---------------------------------------------------------
#---------------------------------------------------------
#прорисовка кораблей и поля
clear

#declare -i _window_y=`tput cols`
declare -i _window_x=`tput lines`

let amount_param=($lenght-$count+1)/2 	#кол-во параматров(координат кораблей)

echo -n "  0 1 2 3 4 5 6 7 8 9"		#прорисовка поля
echo
for ((i=0;i<10;i++))		
do						
	echo "$i --------------------"
done

for ((g=0 ; g<$amount_param ; g++))
do
 
coord_beg_x=`expr substr ${array[$g]} 1 1`
coord_beg_y=`expr substr ${array[$g]} 2 1`
let g++
coord_end_x=`expr substr ${array[$g]} 1 1`
coord_end_y=`expr substr ${array[$g]} 2 1`


let coord_beg_x=coord_beg_x+1 			# (1,2) - начало координат у нашего поля
let coord_beg_y=coord_beg_y+coord_beg_y+2	#сдвигаем курсор на начало координат 							#нашего поля
let coord_end_x=coord_end_x+1 			# (1,2) - начало координат у нашего поля
let coord_end_y=coord_end_y+coord_end_y+2	#сдвигаем курсор на начало координат 							#нашего поля

for ((i=coord_beg_y;i<=$coord_end_y;i++))		
do						   	#цикл ответственен за столбцы
	( tput cup $coord_beg_x $i ; echo "HH" ) 
done
for ((i=coord_beg_x;i<=$coord_end_x;i++))		
do						   	#цикл ответственен за стоки
	( tput cup $i $coord_beg_y ; echo "HH" ) 
done

done			
tput cup $_window_x 0
#---------------------------------------------------------
